/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKBaseNetChgRelCheckCC
*   ソースファイル名：JKKBaseNetChgRelCheckCC.java
*   作成者          ：富士通
*   日付            ：2013年01月15日
*＜機能概要＞
*   ネット変更関連チェック基底コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2013/01/15   FJ          新規作成 ANK-1276-00-00
*   
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;

import eo.common.constant.JKKFamiilyPackConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EDK0011B090CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0011B090CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0021A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B506CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B506CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1091B502CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1091B502CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1651B501CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1651B501CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0141B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0141B010CBSMsg1List;

/**
 * ネット変更関連チェック基底コモンコンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public abstract class JKKBaseNetChgRelCheckCC extends JKKBaseCC
{
	/** BP項目(サービス契約番号) */
	protected static final String BP_SVC_KEI_NO = "key_svc_kei_no";

	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** IN項目:料金コースコード */
	private static final String IN_PARAM_KEY_PCRS_CD = "key_pcrs_cd";
	/** OUT項目:機器提供サービス契約番号 */
	private static final String OUT_PARAM_KKTK_SVC_KEI_NO = "kktk_svc_kei_no";
	/** OUT項目:配送番号 */
	private static final String OUT_PARAM_HAISO_NO = "haiso_no";
	/** OUT項目:工事案件番号 */
	private static final String OUT_PARAM_KOJIAK_NO = "kojiak_no";

	/* ===== 料金コース変更申込中チェック、住所変更中チェック ===== */
	/* ■□ 異動予約一覧照会SC ■□ */
	/** テンプレートID(異動予約一覧照会) */
	private static final String TEMPLATE_ID_3 = "EKK1681B001";
	/** テンプレートID(異動予約一覧照会明細) */
	private static final String TEMPLATE_ID_3_DETAIL = EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST;
	/** IN項目リスト(異動予約一覧照会) */
	private static final List<String> IN_COLUMN_LIST_3 =
			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_3 = "pcrs_chg_incomp_err";
	/** SC実行結果取得キー(異動予約一覧照会)(プラン変更中チェック) */
	private static final String TEMP_TEMPLATE_KEY_3 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_3 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ===== ルータ予約中チェック ===== */
	/* ■□ 機器提供サービス契約(予約件数)一覧照会SC ■□ */
	/** テンプレートID(機器提供サービス契約(予約件数)一覧照会) */
	private static final String TEMPLATE_ID_6 = "EKK0341B506";
	/** テンプレートID(機器提供サービス契約(予約件数)一覧照会明細) */
	private static final String TEMPLATE_ID_6_DETAIL = EKK0341B506CBSMsg.EKK0341B506CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約(予約件数)一覧照会) */
	private static final List<String> IN_COLUMN_LIST_6 = Arrays.asList(EKK0341B506CBSMsg.KEY_SVC_KEI_NO, EKK0341B506CBSMsg.KEY_KKTK_SVC_CD);
	/** 関連チェックエラー項目(機器提供サービス契約(予約件数)一覧照会) */
	private static final String ERROR_COLUMN_6 = "router_rsv_err";
	/** SC実行結果取得キー(機器提供サービス契約(予約件数)一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_6 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_6 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ===== 工事未完了チェック ===== */
	/* ■□ 工事案件一覧照会SC ■□ */
	/** テンプレートID(工事案件一覧照会) */
	private static final String TEMPLATE_ID_10 = "EKU0011B010";
	/** テンプレートID(工事案件一覧照会明細) */
	private static final String TEMPLATE_ID_10_DETAIL = EKU0011B010CBSMsg.EKU0011B010CBSMSG1LIST;
	/** IN項目リスト(工事案件一覧照会) */
	private static final List<String> IN_COLUMN_LIST_10 =
			Arrays.asList(EKU0011B010CBSMsg.KEY_KOJIAK_NO_SVC_KEI_NO, EKU0011B010CBSMsg.MAX_SEARCH_NUM, EKU0011B010CBSMsg.DISPLAY_NUM,
					EKU0011B010CBSMsg.DISPLAY_PAGE_NUM, EKU0011B010CBSMsg.SEARCH_TYPE, EKU0011B010CBSMsg.TOTAL_PAGE_NUM);
	/** 関連チェックエラー項目(工事案件一覧照会) */
	private static final String ERROR_COLUMN_10 = "kojiak_err";
	/** SC実行結果取得キー(工事案件一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_10 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_10 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ===== 工事未完了チェック(ファミリーパック) ===== */
	/* ■□ 工事案件一意照会SC ■□ */
	/** テンプレートID(工事案件一意照会) */
	private static final String TEMPLATE_ID_11 = "EKU0011A010";
	/** テンプレートID(工事案件一意照会明細) */
	private static final String TEMPLATE_ID_11_DETAIL = EKU0011A010CBSMsg.EKU0011A010CBSMSG1LIST;
	/** IN項目リスト(工事案件一意照会) */
	private static final List<String> IN_COLUMN_LIST_11 = Arrays.asList(EKU0011A010CBSMsg.KEY_KOJIAK_NO);
	/** 関連チェックエラー項目(工事案件一意照会) */
	private static final String ERROR_COLUMN_11 = "kojiak_err";
	/** SC実行結果取得キー(工事案件一意照会) */
	private static final String TEMP_TEMPLATE_KEY_11 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_11 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ===== プラン変更収容替工事依頼の追加ルータ出荷指図済みチェック ===== */
	/* ■□ 工事案件対象宅内機器一覧照会SC ■□ */
	/** テンプレートID(工事案件対象宅内機器一覧照会) */
	private static final String TEMPLATE_ID_12 = "EKU0141B010";
	/** テンプレートID(工事案件対象宅内機器一覧照会明細) */
	private static final String TEMPLATE_ID_12_DETAIL = EKU0141B010CBSMsg.EKU0141B010CBSMSG1LIST;
	/** IN項目リスト(工事案件対象宅内機器一覧照会) */
	private static final List<String> IN_COLUMN_LIST_12 =
			Arrays.asList(EKU0141B010CBSMsg.KEY_KOJIAK_NO, EKU0141B010CBSMsg.MAX_SEARCH_NUM, EKU0141B010CBSMsg.DISPLAY_NUM,
					EKU0141B010CBSMsg.DISPLAY_PAGE_NUM, EKU0141B010CBSMsg.SEARCH_TYPE, EKU0141B010CBSMsg.TOTAL_PAGE_NUM);
	/** 関連チェックエラー項目(工事案件対象宅内機器一覧照会) */
	private static final String ERROR_COLUMN_12 = EKU0141B010CBSMsg.KEY_KOJIAK_NO_ERR;
	/** SC実行結果取得キー(工事案件対象宅内機器一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_12 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_12 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 契約機器配送対象物品一覧照会SC ■□ */
	/** テンプレートID(契約機器配送対象物品一覧照会) */
	private static final String TEMPLATE_ID_13 = "EDK0011B090";
	/** テンプレートID(契約機器配送対象物品一覧照会明細) */
	private static final String TEMPLATE_ID_13_DETAIL = EDK0011B090CBSMsg.EDK0011B090CBSMSG1LIST;
	/** IN項目リスト(契約機器配送対象物品一覧照会) */
	private static final List<String> IN_COLUMN_LIST_13 =
			Arrays.asList(EDK0011B090CBSMsg.KEY_HAISO_NO, EDK0011B090CBSMsg.KEY_HAISO_TAIBPIN_NO, EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO);
	/** 関連チェックエラー項目(契約機器配送対象物品一覧照会) */
	private static final String ERROR_COLUMN_13 = EDK0011B090CBSMsg.KEY_HAISO_NO_ERR;
	/** SC実行結果取得キー(契約機器配送対象物品一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_13 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_13 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 料金コース一意照会SC ■□ */
	/** テンプレートID(料金コース一意照会) */
	private static final String TEMPLATE_ID_14 = "EKK0791A010";
	/** テンプレートID(料金コース一意照会明細) */
	private static final String TEMPLATE_ID_14_DETAIL = EKK0791A010CBSMsg.EKK0791A010CBSMSG1LIST;
	/** IN項目リスト(料金コース一意照会) */
	private static final List<String> IN_COLUMN_LIST_14 =
			Arrays.asList(EKK0791A010CBSMsg.KEY_PCRS_CD, EKK0791A010CBSMsg.KEY_GENE_ADD_DTM, EKK0791A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(料金コース一意照会) */
	private static final String ERROR_COLUMN_14 = EKK0791A010CBSMsg.KEY_PCRS_CD_ERR;
	/** SC実行結果取得キー(料金コース一意照会)(カレント) */
	private static final String TEMP_TEMPLATE_KEY_14 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_14 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 異動予約一覧照会SC ■□ */
	/** テンプレートID(異動予約一覧照会) */
	private static final String TEMPLATE_ID_15 = "EKK1681B001";
	/** テンプレートID(異動予約一覧照会明細) */
	private static final String TEMPLATE_ID_15_DETAIL = EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST;
	/** IN項目リスト(異動予約一覧照会) */
	private static final List<String> IN_COLUMN_LIST_15 =
			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_15 = EKK1681B001CBSMsg.KEY_IDO_DIV_ERR;
	/** SC実行結果取得キー(異動予約一覧照会)(プラン変更中チェック) */
	private static final String TEMP_TEMPLATE_KEY_15 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_15 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器自動交換対象型式一覧照会SC ■□ */
	/** テンプレートID(機器自動交換対象型式一覧照会) */
	private static final String TEMPLATE_ID_16 = "EKK1651B501";
	/** テンプレートID(機器自動交換対象型式一覧照会明細) */
	private static final String TEMPLATE_ID_16_DETAIL = EKK1651B501CBSMsg.EKK1651B501CBSMSG1LIST;
	/** IN項目リスト(機器自動交換対象型式一覧照会) */
	private static final List<String> IN_COLUMN_LIST_16 =
			Arrays.asList(EKK1651B501CBSMsg.KEY_ATKN_SBT_CD, EKK1651B501CBSMsg.KEY_CHAF_KIKI_SPEC_CD, EKK1651B501CBSMsg.KEY_CHBF_KIKI_SPEC_CD,
					EKK1651B501CBSMsg.KEY_HAMBAI_SBT_CD, EKK1651B501CBSMsg.KEY_KKTK_SBT_CD, EKK1651B501CBSMsg.KEY_KKTK_SVC_CD);
	/** 関連チェックエラー項目(機器自動交換対象型式一覧照会) */
	private static final String ERROR_COLUMN_16 = EKK1651B501CBSMsg.KEY_ATKN_SBT_CD_ERR;
	/** SC実行結果取得キー(機器自動交換対象型式一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_16 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_16 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ===== 料金コース変更申込中チェック、住所変更中チェック ===== */
	/* ■□ 申込明細一意照会SC ■□ */
	/** テンプレートID(申込明細一意照会) */
	private static final String TEMPLATE_ID_17 = "EKK0021A010";
	/** テンプレートID(申込明細一意照会明細) */
	private static final String TEMPLATE_ID_17_DETAIL = EKK0021A010CBSMsg.EKK0021A010CBSMSG1LIST;
	/** IN項目リスト(申込明細一意照会) */
	private static final List<String> IN_COLUMN_LIST_17 = Arrays.asList(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, EKK0021A010CBSMsg.KEY_GENE_ADD_DTM);
	/** 関連チェックエラー項目(申込明細一意照会) */
	private static final String ERROR_COLUMN_17 = EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR;
	/** SC実行結果取得キー(申込明細一意照会) */
	private static final String TEMP_TEMPLATE_KEY_17 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_17 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 申込一意照会SC ■□ */
	/** テンプレートID(申込一意照会) */
	private static final String TEMPLATE_ID_18 = "EKK0011A010";
	/** テンプレートID(申込一意照会明細) */
	private static final String TEMPLATE_ID_18_DETAIL = EKK0011A010CBSMsg.EKK0011A010CBSMSG1LIST;
	/** IN項目リスト(申込一意照会) */
	private static final List<String> IN_COLUMN_LIST_18 = Arrays.asList(EKK0011A010CBSMsg.KEY_MSKM_NO, EKK0011A010CBSMsg.KEY_GENE_ADD_DTM);
	/** 関連チェックエラー項目(申込一意照会) */
	private static final String ERROR_COLUMN_18 = "pcrs_chg_incomp_err";
	/** SC実行結果取得キー(申込一意照会) */
	private static final String TEMP_TEMPLATE_KEY_18 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_18 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 進捗一覧照会（申込明細番号・異動区分指定）SC ■□ */
	/** テンプレートID(進捗一覧照会（申込明細番号・異動区分指定）) */
	private static final String TEMPLATE_ID_19 = "EKK1091B502";
	/** テンプレートID(進捗一覧照会（申込明細番号・異動区分指定）明細) */
	private static final String TEMPLATE_ID_19_DETAIL = EKK1091B502CBSMsg.EKK1091B502CBSMSG1LIST;
	/** IN項目リスト(進捗一覧照会（申込明細番号・異動区分指定）) */
	private static final List<String> IN_COLUMN_LIST_19 = Arrays.asList(EKK1091B502CBSMsg.KEY_MSKM_DTL_NO, EKK1091B502CBSMsg.KEY_IDO_DIV);
	/** 関連チェックエラー項目(進捗一覧照会（申込明細番号・異動区分指定）) */
	private static final String ERROR_COLUMN_19 = "addr_chg_incomp_err";
	/** SC実行結果取得キー(進捗一覧照会（申込明細番号・異動区分指定）) */
	private static final String TEMP_TEMPLATE_KEY_19 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_19 + TEMP_TEMPLATE_PRIFIX_SEP;

	/**
	 * ルータ申し込み予約中チェック実行処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	protected void executeRouterRsvCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約番号
		String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);

		// ●機器提供サービス契約(予約件数)一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_6);
		// 上りマッピング
		setInMapKktkSvcRsvCntSearch(param, fixedText, inParamSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_6, TEMPLATE_ID_6_DETAIL, IN_COLUMN_LIST_6, ERROR_COLUMN_6);
		// ルーター予約中チェック
		if (Integer.parseInt((String)(getTemplateList((HashMap)param.getData(fixedText), getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_6),
				TEMPLATE_ID_6_DETAIL).get(0).get(EKK0341B506CBSMsg1List.CNT))) > 0)
		{
			// ルーター予約中エラー
			setRelationErrorInfo(param, TEMPLATE_ID_6, ERROR_COLUMN_6, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}
	}

	/**
	 * 料金コース変更申込中チェック処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception
	 */
	protected void executePcrsChgIncompCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●異動予約一覧照会
		// 上りマッピング
		setInMapIdoRsvSearch(param, fixedText, (String)inMap.get(BP_SVC_KEI_NO), JKKFamiilyPackConst.CD00576_00009, JKKFamiilyPackConst.CD01167_003);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_3, TEMPLATE_ID_3_DETAIL, IN_COLUMN_LIST_3, ERROR_COLUMN_3);
		List<HashMap> idoRsvListPcrs =
				getTemplateList((HashMap)param.getData(fixedText), getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_3), TEMPLATE_ID_3_DETAIL);

		for (HashMap idoRsvMap : idoRsvListPcrs)
		{
			String idoRsvStatCd = (String)idoRsvMap.get(EKK1681B001CBSMsg1List.IDO_RSV_STAT_CD);
			// 予約手続き中、または、未反映はエラー
			if (JKKFamiilyPackConst.CD01168_00.equals(idoRsvStatCd) || JKKFamiilyPackConst.CD01168_03.equals(idoRsvStatCd))
			{
				setRelationErrorInfo(param, TEMPLATE_ID_3, ERROR_COLUMN_3, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}
	}

	/**
	 * 工事未完了チェック実行処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	protected void executeUnderConstructionCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約番号
		String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);

		// ●工事案件一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_10);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapKojiAkSearch(param, fixedText, inParamSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_10, TEMPLATE_ID_10_DETAIL, IN_COLUMN_LIST_10, ERROR_COLUMN_10);
		List<HashMap> kojiAkList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_10), TEMPLATE_ID_10_DETAIL);

		for (HashMap kojiAkMap : kojiAkList)
		{
			// 工事案件ステータス
			String kojiakStat = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_STAT);

			// 工事案件種別コード
			String kojiakSbtCd = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_SBT_CD);

			// 工事未完了、且つ、移設以外の場合
			if (!JKKFamiilyPackConst.CD00474_110.equals(kojiakStat) && !JKKFamiilyPackConst.CD00474_200.equals(kojiakStat)
					&& !JKKFamiilyPackConst.CD00474_900.equals(kojiakStat) && !JKKFamiilyPackConst.CD00577_007.equals(kojiakSbtCd))
			{
				// 工事未完了エラー
				setRelationErrorInfo(param, TEMPLATE_ID_10, ERROR_COLUMN_10, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}
	}

	/**
	 * 工事未完了チェック実行処理(ファミリーパック)
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	protected void executeUnderConstructionChkFp(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約番号
		String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);

		// ●工事案件一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_10);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapKojiAkSearch(param, fixedText, inParamSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_10, TEMPLATE_ID_10_DETAIL, IN_COLUMN_LIST_10, ERROR_COLUMN_10);
		List<HashMap> kojiAkList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_10), TEMPLATE_ID_10_DETAIL);

		for (HashMap kojiAkMap : kojiAkList)
		{
			// 工事案件ステータス
			String kojiakStat = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_STAT);
			// 工事案件種別コード
			String kojiakSbtCd = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_SBT_CD);
			// 工事案件番号
			String kojiakNo = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_NO);

			// 工事未完了 の場合
			if (JKKFamiilyPackConst.CD00474_200.compareTo(kojiakStat) > 0)
			{
				// 新設、撤去／解約、住所変更／新設、住所変更／撤去、面開発の場合、プラン変更且つ受付済みまでのもの、
				if (JKKFamiilyPackConst.CD00577_001.equals(kojiakSbtCd) || JKKFamiilyPackConst.CD00577_002.equals(kojiakSbtCd)
						|| JKKFamiilyPackConst.CD00577_003.equals(kojiakSbtCd) || JKKFamiilyPackConst.CD00577_004.equals(kojiakSbtCd)
						|| JKKFamiilyPackConst.CD00577_012.equals(kojiakSbtCd)
						|| (JKKFamiilyPackConst.CD00577_009.equals(kojiakSbtCd) && (JKKFamiilyPackConst.CD00474_140.compareTo(kojiakStat) <= 0)))
				{
					// ●工事案件一意照会
					// ユーザデータ初期化
					initData(param, fixedText, IN_COLUMN_LIST_11);
					// 上りマッピング
					setInMapKojiAkUniqueSearch(param, fixedText, kojiakNo);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMPLATE_ID_11, TEMPLATE_ID_11_DETAIL, IN_COLUMN_LIST_11, ERROR_COLUMN_11);
					List<HashMap> kojiAkUniqueList =
							getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_11), TEMPLATE_ID_11_DETAIL);

					for (HashMap kojiAkUniqueMap : kojiAkUniqueList)
					{
						// 工事案件完了年月日時分秒
						String kojiakFinDtm = (String)kojiAkUniqueMap.get(EKU0011A010CBSMsg1List.KOJIAK_FIN_DTM);
						// 工事案件キャンセル年月日
						String kojiakCancelYmd = (String)kojiAkUniqueMap.get(EKU0011A010CBSMsg1List.KOJIAK_CANCEL_YMD);
						// 工事案件中止受付年月日
						String kojiakStpUkYmd = (String)kojiAkUniqueMap.get(EKU0011A010CBSMsg1List.KOJIAK_STP_UK_YMD);

						// 工事案件完了年月日時分秒 is Null、且つ、
						// 工事案件キャンセル年月日 is Null、且つ、工事案件中止受付年月日 is Nullの場合
						if (JKKBPActCommon.isNull(kojiakFinDtm) && JKKBPActCommon.isNull(kojiakCancelYmd) && JKKBPActCommon.isNull(kojiakStpUkYmd))
						{
							// 工事未完了エラー
							setRelationErrorInfo(param, TEMPLATE_ID_10, ERROR_COLUMN_10, fixedText);
							throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
									.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
						}
					}
				}
			}
		}
	}

	/**
	 * プラン変更収容替工事依頼の追加ルータ出荷指図済みチェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception 例外
	 */
	protected void executeRouterDirectionsCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約番号
		String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);
		// 料金コースコード
		String inParamPcrsCd = (String)inMap.get(IN_PARAM_KEY_PCRS_CD);

		// ●工事案件一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_10);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapKojiAkSearch(param, fixedText, inParamSvcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_10, TEMPLATE_ID_10_DETAIL, IN_COLUMN_LIST_10, ERROR_COLUMN_10);
		List<HashMap> kojiAkList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_10), TEMPLATE_ID_10_DETAIL);

		for (HashMap kojiAkMap : kojiAkList)
		{
			// 工事案件ステータス
			String kojiakStat = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_STAT);
			// 工事案件種別コード
			String kojiakSbtCd = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_SBT_CD);
			// 工事案件番号
			String kojiakNo = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_NO);

			// 工事未完了、且つ、プラン変更（収容替）の場合
			if (JKKFamiilyPackConst.CD00474_200.compareTo(kojiakStat) > 0 && (JKKFamiilyPackConst.CD00577_009.equals(kojiakSbtCd)))
			{
				// ●工事案件一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_11);
				// 上りマッピング
				setInMapKojiAkUniqueSearch(param, fixedText, kojiakNo);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_11, TEMPLATE_ID_11_DETAIL, IN_COLUMN_LIST_11, ERROR_COLUMN_11);
				List<HashMap> kojiAkUniqueList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_11), TEMPLATE_ID_11_DETAIL);

				for (HashMap kojiAkUniqueMap : kojiAkUniqueList)
				{
					// 工事案件完了年月日時分秒
					String kojiakFinDtm = (String)kojiAkUniqueMap.get(EKU0011A010CBSMsg1List.KOJIAK_FIN_DTM);
					// 工事案件キャンセル年月日
					String kojiakCancelYmd = (String)kojiAkUniqueMap.get(EKU0011A010CBSMsg1List.KOJIAK_CANCEL_YMD);
					// 工事案件中止受付年月日
					String kojiakStpUkYmd = (String)kojiAkUniqueMap.get(EKU0011A010CBSMsg1List.KOJIAK_STP_UK_YMD);

					// 工事案件完了年月日時分秒 is Null、且つ、
					// 工事案件キャンセル年月日 is Null、且つ、工事案件中止受付年月日 is Nullの場合
					if (JKKBPActCommon.isNull(kojiakFinDtm) && JKKBPActCommon.isNull(kojiakCancelYmd) && JKKBPActCommon.isNull(kojiakStpUkYmd))
					{
						// ●工事案件対象宅内機器一覧照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COLUMN_LIST_12);
						// 検索エラーなし設定
						ignoreSearchError(param, fixedText);
						// 上りマッピング
						setInMapKojiAkTkSearch(param, fixedText, kojiakNo);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMPLATE_ID_12, TEMPLATE_ID_12_DETAIL, IN_COLUMN_LIST_12, ERROR_COLUMN_12);
						List<HashMap> kojiAkTkList =
								getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_12), TEMPLATE_ID_12_DETAIL);

						for (HashMap kojiAkTkMap : kojiAkTkList)
						{
							// 工事案件対象宅内機器ステータス
							String kojiakTrgtTaknkikiStat = (String)kojiAkTkMap.get(EKU0141B010CBSMsg1List.KOJIAK_TRGT_TAKNKIKI_STAT);

							if (kojiakTrgtTaknkikiStat.equals(JKKFamiilyPackConst.CD00475_110))
							{
								// ｢なし｣は対象外
								continue;
							}

							// 宅内機器種別コード(工事)
							String taknkikiSbtCdKU = (String)kojiAkTkMap.get(EKU0141B010CBSMsg1List.TAKNKIKI_SBT_CD);
							// 機器提供サービス契約番号
							String kktkSvcKeiNo = (String)kojiAkTkMap.get(EKU0141B010CBSMsg1List.KKTK_SVC_KEI_NO);

							// ルーターの場合
							if (JKKFamiilyPackConst.TKNI_KIKI_SBT_CD_F0.equals(taknkikiSbtCdKU))
							{
								// ●契約機器配送対象物品一覧照会
								// ユーザデータ初期化
								initData(param, fixedText, IN_COLUMN_LIST_13);
								// 検索エラーなし設定
								ignoreSearchError(param, fixedText);
								// 上りマッピング
								setInMapHaisoInfoSearch(param, fixedText, kktkSvcKeiNo);
								// サービスIF実行
								executeSC(handle, param, fixedText, TEMPLATE_ID_13, TEMPLATE_ID_13_DETAIL, IN_COLUMN_LIST_13, ERROR_COLUMN_13);
								List<HashMap> haisoInfokList =
										getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_13), TEMPLATE_ID_13_DETAIL);

								// 配送情報なし
								if (haisoInfokList.isEmpty())
								{
									continue;
								}

								for (HashMap haisoInfoMap : haisoInfokList)
								{
									// 配送番号
									String haisoNo = (String)haisoInfoMap.get(EDK0011B090CBSMsg1List.HAISO_NO);
									// 宅内機器型式コード
									String tknkikiModelCd = (String)haisoInfoMap.get(EDK0011B090CBSMsg1List.TAKNKIKI_MODEL_CD);
									// 配送ステータス
									String haisoStat = (String)haisoInfoMap.get(EDK0011B090CBSMsg1List.HAISO_STAT);

									// 申込明細番号(配送対象物品)
									String mskmDtlNoHaiso = (String)haisoInfoMap.get(EDK0011B090CBSMsg1List.MSKM_DTL_NO);

									// ●料金コース一意照会
									// ユーザデータ初期化
									initData(param, fixedText, IN_COLUMN_LIST_14);
									// 上りマッピング
									setInMapPcrsSearch(param, fixedText, inParamPcrsCd);
									// サービスIF実行
									executeSC(handle, param, fixedText, TEMPLATE_ID_14, TEMPLATE_ID_14_DETAIL, IN_COLUMN_LIST_14, ERROR_COLUMN_14);

									// 料金コース速度コード(コース変更前)
									String pcrsSpeedCdCurrent =
											getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_14), TEMPLATE_ID_14_DETAIL,
													EKK0791A010CBSMsg1List.PCRS_SPEED_CD, 0);

									// 料金コース速度コード(コース変更後)
									String pcrsSpeedCdReserve = pcrsSpeedCdCurrent;

									// 申込明細番号(異動予約(プラン変更))
									String mskmDtlNoIdoRsv = BLANK;

									// ●異動予約一覧照会
									// ユーザデータ初期化
									initData(param, fixedText, IN_COLUMN_LIST_15);
									// 検索エラーなし設定
									ignoreSearchError(param, fixedText);
									// 上りマッピング
									setInMapIdoRsvSearch(param, fixedText, inParamSvcKeiNo, JKKFamiilyPackConst.CD00576_00009, JKKFamiilyPackConst.CD01167_003);
									// サービスIF実行
									executeSC(handle, param, fixedText, TEMPLATE_ID_15, TEMPLATE_ID_15_DETAIL, IN_COLUMN_LIST_15, ERROR_COLUMN_15);

									// 異動予約あり
									if (isExistsTemplateDetail(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_15), TEMPLATE_ID_15_DETAIL))
									{
										for (HashMap map : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_15),
												TEMPLATE_ID_15_DETAIL))
										{
											String idoRsvStatCd = (String)map.get(EKK1681B001CBSMsg1List.IDO_RSV_STAT_CD);

											mskmDtlNoIdoRsv = (String)map.get(EKK1681B001CBSMsg1List.MSKM_DTL_NO);

											// 異動予約状態コードが未反映、または、予約手続中
											if (JKKFamiilyPackConst.CD01168_00.equals(idoRsvStatCd) || JKKFamiilyPackConst.CD01168_03.equals(idoRsvStatCd))
											{
												String pcrsCdReserve =
														getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_15),
																TEMPLATE_ID_15_DETAIL, EKK1681B001CBSMsg1List.NEW_PCRS_CD, 0);

												// ●料金コース一意照会
												// ユーザデータ初期化
												initData(param, fixedText, IN_COLUMN_LIST_14);
												// 上りマッピング
												setInMapPcrsSearch(param, fixedText, pcrsCdReserve);
												// サービスIF実行
												executeSC(handle, param, fixedText, TEMPLATE_ID_14, TEMPLATE_ID_14_DETAIL, IN_COLUMN_LIST_14,
														ERROR_COLUMN_14);

												pcrsSpeedCdReserve =
														getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_14),
																TEMPLATE_ID_14_DETAIL, EKK0791A010CBSMsg1List.PCRS_SPEED_CD, 0);
												break;
											}
										}
									}

									// 申込明細番号(異動予約(プラン変更))と申込明細番号(配送対象物品)が一致しない場合は対象外
									if (!JKKBPActCommon.isNull(mskmDtlNoIdoRsv) && !mskmDtlNoIdoRsv.equals(mskmDtlNoHaiso))
									{
										continue;
									}

									// ●機器自動交換対象型式一覧照会
									// ユーザデータ初期化
									initData(param, fixedText, IN_COLUMN_LIST_16);
									// 上りマッピング
									setInMapKkAutoTypeSearch(param, fixedText, pcrsSpeedCdCurrent, pcrsSpeedCdReserve);
									// サービスIF実行
									executeSC(handle, param, fixedText, TEMPLATE_ID_16, TEMPLATE_ID_16_DETAIL, IN_COLUMN_LIST_16, ERROR_COLUMN_16);

									// 交換対象宅内機器型式コード
									String koknAfTaknkikiModelCd =
											getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_16), TEMPLATE_ID_16_DETAIL,
													EKK1651B501CBSMsg1List.KOKAN_AF_TAKNKIKI_MODEL_CD, 0);

									// ファミリーパック対象ルーターを保有
									if (tknkikiModelCd.equals(koknAfTaknkikiModelCd))
									{
										return;
									}
									else
									{
										// 指図済、出荷済、完了済
										if (JKKFamiilyPackConst.CD00009_002.equals(haisoStat) || JKKFamiilyPackConst.CD00009_003.equals(haisoStat)
												|| JKKFamiilyPackConst.CD00009_004.equals(haisoStat))
										{
											// ルーター出荷済エラー
											setRelationErrorInfo(param, TEMPLATE_ID_10, ERROR_COLUMN_10, fixedText);
											throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)),
													String.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
										}
										// 受付済
										else if (JKKFamiilyPackConst.CD00009_001.equals(haisoStat))
										{
											// 機器提供サービス契約番号
											inMap.put(OUT_PARAM_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
											// 配送番号
											inMap.put(OUT_PARAM_HAISO_NO, haisoNo);
											// 工事案件番号
											inMap.put(OUT_PARAM_KOJIAK_NO, kojiakNo);
											return;
										}
										else
										{
											return;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}

	/**
	 * 住所変更中チェック
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws Exception 例外
	 */
	protected void executeAddrChgIncompCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// IN項目:サービス契約番号
		String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);

		// ●異動予約一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_3);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapIdoRsvSearch(param, fixedText, inParamSvcKeiNo, null, null);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_3, TEMPLATE_ID_3_DETAIL, IN_COLUMN_LIST_3, ERROR_COLUMN_3);
		List<HashMap> idoRsvListAddr = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_3), TEMPLATE_ID_3_DETAIL);

		for (HashMap idoRsvMap : idoRsvListAddr)
		{
			String idoDiv = (String)idoRsvMap.get(EKK1681B001CBSMsg1List.IDO_DIV);
			// 住所変更・登録、または、 住所変更・確定 
			if (JKKFamiilyPackConst.CD00576_00019.equals(idoDiv) || JKKFamiilyPackConst.CD00576_00020.equals(idoDiv))
			{
				// ●申込明細一意照会
				// 上りマッピング
				setInMapMskmDtlSearch(param, fixedText, (String)idoRsvMap.get(EKK1681B001CBSMsg1List.MSKM_DTL_NO));
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_17, TEMPLATE_ID_17_DETAIL, IN_COLUMN_LIST_17, ERROR_COLUMN_17);
				HashMap mskmDtlMap =
						(HashMap)(getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_17), TEMPLATE_ID_17_DETAIL).get(0));

				// ●申込一意照会
				// 上りマッピング
				setInMapMskmSearch(param, fixedText, (String)mskmDtlMap.get(EKK0021A010CBSMsg1List.MSKM_NO));
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_18, TEMPLATE_ID_18_DETAIL, IN_COLUMN_LIST_18, ERROR_COLUMN_18);
				HashMap mskmMap = (HashMap)(getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_18), TEMPLATE_ID_18_DETAIL).get(0));

				String mskmStat = (String)mskmMap.get(EKK0011A010CBSMsg1List.MSKM_STAT);

				// 申込ステータスが登録済み、差し戻し中、承認済みの場合
				if (JKKFamiilyPackConst.CD00060_100.equals(mskmStat) || JKKFamiilyPackConst.CD00060_110.equals(mskmStat) || JKKFamiilyPackConst.CD00060_130.equals(mskmStat))
				{
					List<HashMap> prgList = new ArrayList();

					// ●進捗一覧照会（申込明細番号・異動区分指定）※住所変更・登録 
					// 検索エラーなし
					ignoreSearchError(param, fixedText);
					// 上りマッピング
					setInMapPrgSearch(param, fixedText, (String)idoRsvMap.get(EKK1681B001CBSMsg1List.MSKM_DTL_NO), JKKFamiilyPackConst.CD00576_00019);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMPLATE_ID_19, TEMPLATE_ID_19_DETAIL, IN_COLUMN_LIST_19, ERROR_COLUMN_19);
					prgList.addAll(getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_19), TEMPLATE_ID_19_DETAIL));

					// ●進捗一覧照会（申込明細番号・異動区分指定）※住所変更・確定
					// 検索エラーなし
					ignoreSearchError(param, fixedText);
					// 上りマッピング
					setInMapPrgSearch(param, fixedText, (String)idoRsvMap.get(EKK1681B001CBSMsg1List.MSKM_DTL_NO), JKKFamiilyPackConst.CD00576_00020);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMPLATE_ID_19, TEMPLATE_ID_19_DETAIL, IN_COLUMN_LIST_19, ERROR_COLUMN_19);
					prgList.addAll(getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_19), TEMPLATE_ID_19_DETAIL));

					boolean isAddrChgError = true;
					for (HashMap prgMap : prgList)
					{
						// 進捗ステータス
						String prgStatus = (String)prgMap.get(EKK1091B502CBSMsg1List.PRG_STAT);

						// '住所変更完了'、'住所変更取消完了'であるか判定
						if (JKKFamiilyPackConst.CD00647_6100.equals(prgStatus) || JKKFamiilyPackConst.CD00647_6400.equals(prgStatus))
						{
							isAddrChgError = false;
							break;
						}
					}

					// '住所変更完了'、'住所変更取消完了'以外の場合、住所変更申込中エラー
					if (isAddrChgError)
					{
						setRelationErrorInfo(param, TEMPLATE_ID_19, ERROR_COLUMN_19, fixedText);
						throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
								.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
					}
				}
			}
		}
	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約(予約件数)一覧照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapKktkSvcRsvCntSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0341B506CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿機器提供サービスコード
		inMap.put(EKK0341B506CBSMsg.KEY_KKTK_SVC_CD, JKKFamiilyPackConst.KK0771_KKTK_SVC_CD_C014);
	}

	/**
	 * 上りマッピング項目設定(工事案件一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapKojiAkSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1:サービス契約番号)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿工事案件番号サービス契約番号
		inMap.put(EKU0011B010CBSMsg.KEY_KOJIAK_NO_SVC_KEI_NO, svcKeiNo);
		// 最大検索件数
		inMap.put(EKU0011B010CBSMsg.MAX_SEARCH_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKU0011B010CBSMsg.DISPLAY_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKU0011B010CBSMsg.DISPLAY_PAGE_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKU0011B010CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKU0011B010CBSMsg.TOTAL_PAGE_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);

	}

	/**
	 * 上りマッピング項目設定(工事案件一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kojiAkNo 工事案件番号
	 * @throws RequestParameterException
	 */
	private void setInMapKojiAkUniqueSearch(IRequestParameterReadWrite param, String fixedText, String kojiAkNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿工事案件番号
		inMap.put(EKU0011A010CBSMsg.KEY_KOJIAK_NO, kojiAkNo);

	}

	/**
	 * 上りマッピング項目設定(工事案件対象宅内機器一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kojiAkNo 工事案件番号
	 * @throws RequestParameterException
	 */
	private void setInMapKojiAkTkSearch(IRequestParameterReadWrite param, String fixedText, String kojiAkNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿工事案件番号
		inMap.put(EKU0141B010CBSMsg.KEY_KOJIAK_NO, kojiAkNo);
		// 最大検索件数
		inMap.put(EKU0141B010CBSMsg.MAX_SEARCH_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKU0141B010CBSMsg.DISPLAY_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKU0141B010CBSMsg.DISPLAY_PAGE_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKU0141B010CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKU0141B010CBSMsg.TOTAL_PAGE_NUM, JKKFamiilyPackConst.MAX_SEARCH_NUM);
	}

	/**
	 * 上りマッピング項目設定(契約機器配送対象物品一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapHaisoInfoSearch(IRequestParameterReadWrite param, String fixedText, String kktkSvcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿機器提供サービス契約番号
		inMap.put(EDK0011B090CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);

	}

	/**
	 * 上りマッピング項目設定(料金コース一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd 料金コースコード
	 * @throws RequestParameterException 
	 */
	private void setInMapPcrsSearch(IRequestParameterReadWrite param, String fixedText, String pcrsCd) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 料金コース
		inMap.put(EKK0791A010CBSMsg.KEY_PCRS_CD, pcrsCd);

		// 予約適用年月日
		inMap.put(EKK0791A010CBSMsg.KEY_RSV_APLY_YMD, JKKBPActCommon.getOpeDate(null));
	}

	/**
	 * 上りマッピング項目設定(異動予約一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @param idoDiv 異動区分
	 * @param idoRsvDtlCd 異動予約詳細コード
	 * @throws RequestParameterException
	 */
	private void setInMapIdoRsvSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo, String idoDiv, String idoRsvDtlCd)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK1681B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿異動区分
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_DIV, idoDiv);
		// ＫＥＹ＿異動予約詳細コード
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, idoRsvDtlCd);
	}

	/**
	 * 上りマッピング項目設定(機器自動交換対象型式一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsSpeedCdCurrent 料金コース速度コード(カレント)
	 * @param pcrsSpeedCdReserve 料金コース速度コード(予約)
	 * @throws RequestParameterException
	 */
	private void setInMapKkAutoTypeSearch(IRequestParameterReadWrite param, String fixedText, String pcrsSpeedCdCurrent, String pcrsSpeedCdReserve)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 自動交換種別コード
		inMap.put(EKK1651B501CBSMsg.KEY_ATKN_SBT_CD, JKKFamiilyPackConst.CD01153_002);
		// 機器提供サービスコード
		inMap.put(EKK1651B501CBSMsg.KEY_KKTK_SVC_CD, JKKFamiilyPackConst.KK0771_KKTK_SVC_CD_C014);
		// 変更前機器スペックコード
		inMap.put(EKK1651B501CBSMsg.KEY_CHBF_KIKI_SPEC_CD, pcrsSpeedCdCurrent);
		// 変更後機器スペックコード
		inMap.put(EKK1651B501CBSMsg.KEY_CHAF_KIKI_SPEC_CD, pcrsSpeedCdReserve);
		// 機器提供種別コード
		inMap.put(EKK1651B501CBSMsg.KEY_KKTK_SBT_CD, JKKFamiilyPackConst.CD00212_02);
		// 販売種別コード
		inMap.put(EKK1651B501CBSMsg.KEY_HAMBAI_SBT_CD, JKKFamiilyPackConst.CD00348_10);

	}

	/**
	 * 上りマッピング項目設定(申込明細一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param mskmDtlNo 申込明細番号
	 * @throws RequestParameterException
	 */
	private void setInMapMskmDtlSearch(IRequestParameterReadWrite param, String fixedText, String mskmDtlNo) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿申込明細番号
		inMap.put(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);
	}

	/**
	 * 上りマッピング項目設定(申込一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param mskmNo 申込番号
	 * @throws RequestParameterException
	 */
	private void setInMapMskmSearch(IRequestParameterReadWrite param, String fixedText, String mskmNo) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿申込番号
		inMap.put(EKK0011A010CBSMsg.KEY_MSKM_NO, mskmNo);

	}

	/**
	 * 上りマッピング項目設定(進捗一覧照会（申込明細番号・異動区分指定）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param mskmDtlNo 申込明細番号
	 * @param idoDiv 異動区分
	 * @throws RequestParameterException
	 */
	private void setInMapPrgSearch(IRequestParameterReadWrite param, String fixedText, String mskmDtlNo, String idoDiv)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿申込番号
		inMap.put(EKK1091B502CBSMsg.KEY_MSKM_DTL_NO, mskmDtlNo);
		// ＫＥＹ＿異動区分
		inMap.put(EKK1091B502CBSMsg.KEY_IDO_DIV, idoDiv);
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@Override
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// TODO 自動生成されたメソッドスタブ
		return null;
	}

}
