/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUIPv6SvcRelCheckCC
*   ソースファイル名：JFUIPv6SvcRelCheckCC.java
*   作成者          ：富士通
*   日付            ：2012年3月15日
*＜機能概要＞
*   IPv6サービス関連チェックコモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v3.00       2012/03/15   FJ）南岡    【ANK-0046-00-00】 IPV6対応
*   v3.00       2012/09/19   FJ）山名    【ST2-2012-0001684】工事案件ステータス：120（登録済）対応
*   v4.00       2012/11/21   FJ）大島    【IT2-2012-0001747】エラーハンドリング対応
*   v4.00       2013/01/07   FJ）岡井    【ANK-1399-00-00】IPv6対応ルーター機器出荷済チェック追加
*   v5.00       2013/02/14   FJ) 谷本    【IT1-2013-0000277】静的変数の削除対応
*   v7.00       2013/11/20   FJ) 岡井    【ANK-1578-00-00】多機能ルーター(機器追加)
**********************************************************************/
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.SCCallException;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.sun.el.parser.ParseException;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0811A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0811A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811B503CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811B503CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKU0011B010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKU0011B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0331A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0331A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;

/**
 * IPv6サービス関連チェックコモンコンポーネント部品
 * 
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUIPv6SvcRelCheckCC extends JFUBaseNetChgRelCheckCC
{
	/* ===== パラメータ ===== */
	/** 料金グループコード */
	private static final String PARAM_KEY_PRC_GRP_CD = "key_prc_grp_cd";
	/** 料金コースコード */
	private static final String PARAM_KEY_PCRS_CD = "key_pcrs_cd";
	/** サービス契約番号 */
	private static final String PARAM_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** SYSID */
	private static final String KEY_SYSID = "key_sysid";
	/** サービス契約回線内訳番号 */
	private static final String KEY_SVC_KEI_KAISEN_UCWK_NO = "key_svc_kei_kaisen_ucwk_no";

	/* ===== 最大契約数チェック ===== */
	/* ■□ 料金コース_オプションサービス一意照会SC ■□ */
	/** テンプレートID(料金コース_オプションサービス一意照会) */
	private static final String TEMPLATE_ID_1 = "EKK0811A010";
	/** テンプレートID(料金コース_オプションサービス一意照会明細) */
	private static final String TEMPLATE_ID_1_DETAIL = EKK0811A010CBSMsg.EKK0811A010CBSMSG1LIST;
	/** IN項目リスト(料金コース_オプションサービス一意照会) */
	private static final List<String> IN_COLUMN_LIST_1 =
			Arrays.asList(EKK0811A010CBSMsg.KEY_PCRS_CD, EKK0811A010CBSMsg.KEY_OP_SVC_CD, EKK0811A010CBSMsg.KEY_GENE_ADD_DTM,
					EKK0811A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(料金コース_オプションサービス一意照会) */
	private static final String ERROR_COLUMN_1 = EKK0811A010CBSMsg.KEY_PCRS_CD_ERR;
	/** SC実行結果取得キー(料金コース_オプションサービス一意照会) */
	private static final String TEMP_TEMPLATE_KEY_1 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_1 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ オプションサービス契約一覧照会（サービス契約番号）SC ■□ */
	/** テンプレートID(オプションサービス契約一覧照会（サービス契約番号）) */
	private static final String TEMPLATE_ID_2 = "EKK0351B002";
	/** テンプレートID(オプションサービス契約一覧照会（サービス契約番号）明細 */
	private static final String TEMPLATE_ID_2_DETAIL = EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST;
	/** IN項目リスト(オプションサービス契約一覧照会（サービス契約番号）) */
	private static final List<String> IN_COLUMN_LIST_2 =
			Arrays.asList(EKK0351B002CBSMsg.KEY_SVC_KEI_NO, EKK0351B002CBSMsg.KEY_SVC_KEI_UCWK_NO, EKK0351B002CBSMsg.KEY_OP_SVC_CD,
					EKK0351B002CBSMsg.KEY_BASE_YMD);
	/** 関連チェックエラー項目(オプションサービス契約一覧照会（サービス契約番号） */
	private static final String ERROR_COLUMN_2 = EKK0351B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** 関連チェックエラー項目(オプションサービス契約一覧照会（サービス契約番号）(契約済) */
	private static final String ERROR_COLUMN_2_KEI_SUMI = "ipv6_svc_kei_cnt_err";
	/** SC実行結果取得キー(オプションサービス契約一覧照会（サービス契約番号） */
	private static final String TEMP_TEMPLATE_KEY_2 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_2 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ===== 起点変電所コード、集約局コード取得チェック ===== */
	/* ■□ 料金コース_オプションサービス一意照会SC ■□ */
	/** テンプレートID(サービス契約回線内訳一覧照会（現在利用中）) */
	private static final String TEMPLATE_ID_3 = "EKK0251B003";
	/** テンプレートID(サービス契約回線内訳一覧照会（現在利用中）明細) */
	private static final String TEMPLATE_ID_3_DETAIL = EKK0251B003CBSMsg.EKK0251B003CBSMSG1LIST;
	/** IN項目リスト(サービス契約回線内訳一覧照会（現在利用中）) */
	private static final List<String> IN_COLUMN_LIST_3 = Arrays.asList(EKK0251B003CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(サービス契約回線内訳一覧照会（現在利用中）) */
	private static final String ERROR_COLUMN_3 = EKK0251B003CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** 関連チェックエラー項目(サービス契約回線内訳一覧照会（現在利用中）(起点変電所コード)) */
	private static final String ERROR_COLUMN_3_KITEN_ERR = "kiten_hdsho_cd_err";
	/** 関連チェックエラー項目(サービス契約回線内訳一覧照会（現在利用中）(集約局コード)) */
	private static final String ERROR_COLUMN_3_SHYAKK_ERR = "shyakk_cd_err";
	/** SC実行結果取得キー(サービス契約回線内訳一覧照会（現在利用中）) */
	private static final String TEMP_TEMPLATE_KEY_3 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_3 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ===== 中心局コード取得チェック ===== */
	/* ■□ 起点変電所一意照会SC ■□ */
	/** テンプレートID(起点変電所一意照会) */
	private static final String TEMPLATE_ID_4 = "EZM0331A010";
	/** テンプレートID(起点変電所一意照会明細) */
	private static final String TEMPLATE_ID_4_DETAIL = EZM0331A010CBSMsg.EZM0331A010CBSMSG1LIST;
	/** IN項目リスト(起点変電所一意照会) */
	private static final List<String> IN_COLUMN_LIST_4 = Arrays.asList(EZM0331A010CBSMsg.KEY_KITEN_HDSHO_CD);
	/** 関連チェックエラー項目(起点変電所一意照会) */
	private static final String ERROR_COLUMN_4 = EZM0331A010CBSMsg.KEY_KITEN_HDSHO_CD_ERR;
	/** 関連チェックエラー項目(起点変電所一意照会(集約局コード)) */
	private static final String ERROR_COLUMN_4_SHYAKK_ERR = "shyakk_cd_err";
	/** SC実行結果取得キー(起点変電所一意照会) */
	private static final String TEMP_TEMPLATE_KEY_4 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_4 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 集約局一意照会SC ■□ */
	/** テンプレートID(集約局一意照会) */
	private static final String TEMPLATE_ID_5 = "EZM0341A010";
	/** テンプレートID(集約局一意照会明細) */
	private static final String TEMPLATE_ID_5_DETAIL = EZM0341A010CBSMsg.EZM0341A010CBSMSG1LIST;
	/** IN項目リスト(集約局一意照会) */
	private static final List<String> IN_COLUMN_LIST_5 = Arrays.asList(EZM0341A010CBSMsg.KEY_SHYAKK_CD);
	/** 関連チェックエラー項目(集約局一意照会) */
	private static final String ERROR_COLUMN_5 = EZM0341A010CBSMsg.KEY_SHYAKK_CD_ERR;
	/** 関連チェックエラー項目(起点変電所一意照会(中心局コード)) */
	private static final String ERROR_COLUMN_5_CHUSKK_CD = "chuskk_cd_err";
	/** SC実行結果取得キー(集約局一意照会) */
	private static final String TEMP_TEMPLATE_KEY_5 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_5 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ===== 機器契約(IPv6対応ルーター)チェック ===== */
	/* ■□ 機器提供サービス契約一覧照会（サービス契約番号）SC ■□ */
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String TEMPLATE_ID_6 = "EKK0341B002";
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約番号）明細) */
	private static final String TEMPLATE_ID_6_DETAIL = EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final List<String> IN_COLUMN_LIST_6 =
			Arrays.asList(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO,
					EKK0341B002CBSMsg.KEY_SORT_KBN);
	/** 関連チェックエラー項目(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String ERROR_COLUMN_6 = EKK0341B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** 関連チェックエラー項目(機器提供サービス契約一覧照会（機器提供サービス契約番号）) */
	private static final String ERROR_COLUMN_6_1 = EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String TEMP_TEMPLATE_KEY_6_1 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_6 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 機器オプションサービス契約一覧照会（フロント）SC ■□ */
	/** テンプレートID(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMPLATE_ID_9 = "EKK2811B503";
	/** テンプレートID(機器オプションサービス契約一覧照会（フロント）明細) */
	private static final String TEMPLATE_ID_9_DETAIL = EKK2811B503CBSMsg.EKK2811B503CBSMSG1LIST;
	/** IN項目リスト(機器オプションサービス契約一覧照会（フロント）) */
	private static final List<String> IN_COLUMN_LIST_9 =
			Arrays.asList(EKK2811B503CBSMsg.KEY_SYSID, EKK2811B503CBSMsg.KEY_TAKNKIKI_SBT_CD, EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO);
	/** 関連チェックエラー項目(機器オプションサービス契約一覧照会（フロント）) */
	private static final String ERROR_COLUMN_9 = EKK2811B503CBSMsg.KEY_SYSID;
	/** SC実行結果取得キー(機器オプションサービス契約一覧照会（フロント）) */
	private static final String TEMP_TEMPLATE_KEY_9 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_9 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 宅内機器型式一意照会SC ■□ */
	/** テンプレートID宅内機器型式一意照会) */
	private static final String TEMPLATE_ID_7 = "EZM0411A010";
	/** テンプレートID宅内機器型式一意照会明細) */
	private static final String TEMPLATE_ID_7_DETAIL = EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST;
	/** IN項目リスト(宅内機器型式一意照会) */
	private static final List<String> IN_COLUMN_LIST_7 = Arrays.asList(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD);
	/** 関連チェックエラー項目(宅内機器型式一意照会) */
	private static final String ERROR_COLUMN_7 = EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR;
	/** 関連チェックエラー項目(宅内機器型式一意照会(IPv6対応ルーター保有)) */
	private static final String ERROR_COLUMN_7_IPV6_KIKI_KEI = "ipv6_kiki_svc_kei_err";
	/** SC実行結果取得キー(宅内機器型式一意照会) */
	private static final String TEMP_TEMPLATE_KEY_7 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_7 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ===== 工事未完了チェック ===== */
	/* ■□ 工事案件一覧照会SC ■□ */
	/** テンプレートID(工事案件一覧照会) */
	private static final String TEMPLATE_ID_8 = "EKU0011B010";
	/** テンプレートID(工事案件一覧照会明細) */
	private static final String TEMPLATE_ID_8_DETAIL = EKU0011B010CBSMsg.EKU0011B010CBSMSG1LIST;
	/** IN項目リスト(工事案件一覧照会) */
	private static final List<String> IN_COLUMN_LIST_8 =
			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_8 = EKU0011B010CBSMsg.KEY_KOJIAK_NO_SVC_KEI_NO_ERR;
	/** 関連チェックエラー項目(工事案件一覧照会(工事未完了)) */
	private static final String ERROR_COLUMN_8_KOJI_FIN = "kojiak_err";
	/** SC実行結果取得キー(工事案件一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_8 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_8 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/** 検索処理パターン(一括) */
	private static final String SEARCH_TYPE_IKT = "1";

	/** 項目名：無料数 */
	private static final String ITEM_MURYO_CNT = "muryo_cnt";
	/** 項目名：契約数 */
	private static final String ITEM_KEI_CNT = "kei_cnt";
	/** 項目名：中心局コード */
	private static final String ITEM_CHUSKK_CD = "chuskk_cd";

	/**
	 * IPv6サービス関連チェック実行処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite executeCheck(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		try
		{
			// -----------------------------------------------------
			// ■リクエストパラメータ取得
			// -----------------------------------------------------
			HashMap inMap = (HashMap)param.getData(fixedText);

			// 料金グループコード
			String prcGrpCd = (String)inMap.get(PARAM_KEY_PRC_GRP_CD);
			// 料金コースコード
			String pcrsCd = (String)inMap.get(PARAM_KEY_PCRS_CD);
			// サービス契約番号
			String svcKeiNo = (String)inMap.get(PARAM_KEY_SVC_KEI_NO);

			// -----------------------------------------------------
			// ■最大契約数チェック
			// -----------------------------------------------------
			checkMaxKeiCnt(handle, param, fixedText, pcrsCd, svcKeiNo);

			// -----------------------------------------------------
			// ■起点変電所コード、集約局コード取得チェック
			// -----------------------------------------------------
			Map retMap = checkKitenHdshoCdShyakkCd(handle, param, fixedText, prcGrpCd, pcrsCd, svcKeiNo);

			// -----------------------------------------------------
			// ■中心局コード取得チェック
			// -----------------------------------------------------
			String kitemHdshoCd = (String)retMap.get(EKK0251B003CBSMsg1List.KITEN_HDSHO_CD);
			String shyakkCd = (String)retMap.get(EKK0251B003CBSMsg1List.SHYAKK_CD);
			checkChukkCd(handle, param, fixedText, prcGrpCd, pcrsCd, svcKeiNo, kitemHdshoCd, shyakkCd);

			// -----------------------------------------------------
			// ■機器契約(IPv6対応ルーター＆機器出荷済)チェック
			// -----------------------------------------------------
			checkKikiKeiIpv6Router(handle, param, fixedText, svcKeiNo);

			// -----------------------------------------------------
			// ■工事未完了チェック
			// -----------------------------------------------------
			checkKojiFin(handle, param, fixedText, svcKeiNo);

		}
		finally
		{
			// 一時領域削除
			super.deleteTempArea(param, fixedText);
		}
		return param;
	}

	/**
	 * 最大契約数チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd 料金コースコード
	 * @param svcKeiNo サービス契約番号
	 * @throws Exception
	 */
	private void checkMaxKeiCnt(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String pcrsCd, String svcKeiNo) throws Exception
	{

		// -----------------------------------------------------
		// ■料金コース_オプションサービス一意照会
		// -----------------------------------------------------
		// 上りマッピング
		setInMapPcrsOpSvcSearch(param, fixedText, pcrsCd);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_1, TEMPLATE_ID_1_DETAIL, IN_COLUMN_LIST_1, ERROR_COLUMN_1);

		// 最大オプションサービス数を取得
		int maxOpSvcCnt =
				Integer.parseInt((String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL).get(0)
						.get(EKK0811A010CBSMsg1List.MAX_OP_SVC_CNT)));

		// 下りマッピング
		setOutMapPcrsOpSvcSearch(param, fixedText);

		// -----------------------------------------------------
		// ■オプションサービス契約一覧照会（サービス契約番号）
		// -----------------------------------------------------
		// 上りマッピング
		setInMapOpSvcKeiSearch(param, fixedText, svcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_2, TEMPLATE_ID_2_DETAIL, IN_COLUMN_LIST_2, ERROR_COLUMN_2);

		// オプションサービス契約一覧照会（サービス契約番号）明細
		List<HashMap> opSvcKeiList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_2, TEMPLATE_ID_2_DETAIL);

		// オプションサービス契約ステータス
		String opSvcKeiStat = null;
		// 契約数
		int keiCnt = 0;
		
		for(int i = 0 ; i < opSvcKeiList.size(); i++)
		{
			// オプションサービス契約ステータス
			opSvcKeiStat = (String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_2, TEMPLATE_ID_2_DETAIL).get(i)
					.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT));
			
			// 最新レコードが解約済またはキャンセル済の以外の場合、契約数としてカウントする。取得されるデータは予約適用コード = "2"（予約確定）
			if(!JFUStrConst.CD00037_910.equals(opSvcKeiStat) && !JFUStrConst.CD00037_920.equals(opSvcKeiStat))
			{
				keiCnt++;
			}
		}

		// 下りマッピング
		setOutMapOpSvcKeiSearch(param, fixedText, keiCnt);

		// -----------------------------------------------------
		// ■契約数上限チェック
		// -----------------------------------------------------
		if (keiCnt >= maxOpSvcCnt)
		{
			// 最大契約数超過エラー
			setRelationErrorInfo(param, TEMPLATE_ID_2, ERROR_COLUMN_2_KEI_SUMI, 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 サービスメッセージ
	 * @param prcGrpCd 料金グループコード
	 * @param pcrsCd 料金コースコード
	 * @param svcKeiNo サービス契約番号
	 * @throws Exception
	 */
	private Map checkKitenHdshoCdShyakkCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String prcGrpCd, String pcrsCd,
			String svcKeiNo) throws Exception
	{

		Map retMap = new HashMap();
		
		// -----------------------------------------------------
		// ■サービス契約回線内訳一覧照会（現在利用中）
		// -----------------------------------------------------
		// 上りマッピング
		setInMapSvcKeiKaisenUcwkSearch(param, fixedText, svcKeiNo);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_3, TEMPLATE_ID_3_DETAIL, IN_COLUMN_LIST_3, ERROR_COLUMN_3);

		// 起点変電所コードを取得
		String kitemHdshoCd =
				(String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_3, TEMPLATE_ID_3_DETAIL).get(0)
						.get(EKK0251B003CBSMsg1List.KITEN_HDSHO_CD));

		// 集約局コードを取得
		String shyakkCd =
				(String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_3, TEMPLATE_ID_3_DETAIL).get(0)
						.get(EKK0251B003CBSMsg1List.SHYAKK_CD));

		// -----------------------------------------------------
		// ■起点変電所コード、集約局コード取得チェック
		// -----------------------------------------------------
		// ＫＥＹ＿料金グループコードが"02"(ホームタイプ)の場合
		// ＫＥＹ＿料金グループコードが"03"(メゾンタイプ)の場合
		// ＫＥＹ＿料金グループコードが"04"(マンションタイプ) 
		// かつ ＫＥＹ＿料金コースコードが"A56"(光配線100M) または、"A57"(光配線1ギガ)の場合
		if (JFUStrConst.CD00133_02.equals(prcGrpCd) || JFUStrConst.CD00133_03.equals(prcGrpCd)
				|| (JFUStrConst.CD00133_04.equals(prcGrpCd) && (JFUStrConst.CD00134_A56.equals(pcrsCd) || JFUStrConst.CD00134_A57.equals(pcrsCd))))
		{
			// サービス契約回線内訳の起点変電所コードが未設定
			if (kitemHdshoCd == null || "".equals(kitemHdshoCd.trim()))
			{
				// 起点変電所コード未設定エラー
				setRelationErrorInfo(param, TEMPLATE_ID_3, ERROR_COLUMN_3_KITEN_ERR, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}
		// ＫＥＹ＿料金グループコードが"04"(マンションタイプ) 
		// かつ ＫＥＹ＿料金コースコードが"A56"(光配線100M) または、"A57"(光配線1ギガ)以外の場合
		else if (JFUStrConst.CD00133_04.equals(prcGrpCd) && !(JFUStrConst.CD00134_A56.equals(pcrsCd) || JFUStrConst.CD00134_A57.equals(pcrsCd)))
		{
			// サービス契約回線内訳の集約局コードが未設定
			if (shyakkCd == null || "".equals(shyakkCd.trim()))
			{
				// 集約局コード未設定エラー
				setRelationErrorInfo(param, TEMPLATE_ID_3, ERROR_COLUMN_3_SHYAKK_ERR, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}
		
		retMap.put(EKK0251B003CBSMsg1List.KITEN_HDSHO_CD, kitemHdshoCd);
		retMap.put(EKK0251B003CBSMsg1List.SHYAKK_CD, shyakkCd);
		
		return retMap;
	}

	/**
	 * 中心局コード取得チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param prcGrpCd 料金グループコード
	 * @param pcrsCd 料金コースコード
	 * @param svcKeiNo サービス契約番号
	 * @param kitemHdshoCd 起点変電所コード
	 * @param shyakkCd 集約局コード
	 * @throws Exception
	 */
	private void checkChukkCd(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String prcGrpCd, String pcrsCd,
			String svcKeiNo, String kitemHdshoCd, String shyakkCd) throws Exception
	{

		// ＫＥＹ＿料金グループコードが"02"(ホームタイプ)の場合
		// ＫＥＹ＿料金グループコードが"03"(メゾンタイプ)の場合
		// ＫＥＹ＿料金グループコードが"04"(マンションタイプ) 
		// かつ ＫＥＹ＿料金コースコードが"A56"(光配線100M) または、"A57"(光配線1ギガ)の場合
		if (JFUStrConst.CD00133_02.equals(prcGrpCd) || JFUStrConst.CD00133_03.equals(prcGrpCd)
				|| (JFUStrConst.CD00133_04.equals(prcGrpCd) && (JFUStrConst.CD00134_A56.equals(pcrsCd) || JFUStrConst.CD00134_A57.equals(pcrsCd))))
		{

			// -----------------------------------------------------
			// ■起点変電所一意照会
			// -----------------------------------------------------
			// 上りマッピング
			setInMapKitenHdshoSearch(param, fixedText, kitemHdshoCd);

			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_4, TEMPLATE_ID_4_DETAIL, IN_COLUMN_LIST_4, ERROR_COLUMN_4);

			// 集約局コードを取得
			shyakkCd =
					(String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_4, TEMPLATE_ID_4_DETAIL).get(0)
							.get(EZM0331A010CBSMsg1List.SHYAKK_CD));

			// -----------------------------------------------------
			// ■集約局コード取得チェック
			// -----------------------------------------------------
			// 起点変電所の集約局コードが未設定
			if (shyakkCd == null || "".equals(shyakkCd.trim()))
			{
				// 集約局コード未設定エラー
				setRelationErrorInfo(param, TEMPLATE_ID_4, ERROR_COLUMN_4_SHYAKK_ERR, fixedText);
				throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String
						.valueOf(RETURN_CODE_NORMAL), JPCModelConstant.RELATION_ERR);
			}
		}

		// -----------------------------------------------------
		// ■集約局一意照会
		// -----------------------------------------------------
		// 上りマッピング
		setInMapShyakkSearch(param, fixedText, shyakkCd);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_5, TEMPLATE_ID_5_DETAIL, IN_COLUMN_LIST_5, ERROR_COLUMN_5);

		// 中心局コードを取得
		String chuskkCd =
				(String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_5, TEMPLATE_ID_5_DETAIL).get(0)
						.get(EZM0341A010CBSMsg1List.CHUSKK_CD));

		// 下りマッピング
		setOutMapShyakkSearch(param, fixedText, chuskkCd);

		// -----------------------------------------------------
		// ■中心局コード取得チェック
		// -----------------------------------------------------
		// 集約局の中心局コードが未設定
		if (chuskkCd == null || "".equals(chuskkCd.trim()))
		{
			// 中心局コード未設定エラー
			setRelationErrorInfo(param, TEMPLATE_ID_5, ERROR_COLUMN_5_CHUSKK_CD, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}
	}

	/**
	 * 機器契約(IPv6対応ルーター)チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws Exception
	 */
	private void checkKikiKeiIpv6Router(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Exception
	{

		// -----------------------------------------------------
		// ■機器提供サービス契約一覧照会（サービス契約番号）
		// -----------------------------------------------------
		// 上りマッピング
		setInMapKktkSvcKeiSearch(param, fixedText, svcKeiNo);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_6, TEMPLATE_ID_6_DETAIL, IN_COLUMN_LIST_6, ERROR_COLUMN_6);

		// 機器提供サービス契約一覧照会（サービス契約番号）明細取得
		List<HashMap> kktkSvcKeiList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_6_1, TEMPLATE_ID_6_DETAIL);

		// -----------------------------------------------------
		// ■機器オプションサービス契約一覧照会（フロント）
		// -----------------------------------------------------
		// 上りマッピング
		setTknRouterSearch(param, fixedText, svcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_9, TEMPLATE_ID_9_DETAIL, IN_COLUMN_LIST_9, ERROR_COLUMN_9);
		// 機器オプションサービス契約一覧照会（フロント）明細取得
		List<HashMap> tknKktkSvcKeiList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_9, TEMPLATE_ID_9_DETAIL);

		// BBRまたは多機能ルーターの機器情報取得判定
		if ((kktkSvcKeiList == null || kktkSvcKeiList.size() == 0)
				&& (tknKktkSvcKeiList == null || tknKktkSvcKeiList.size() == 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);
		}

		// -----------------------------------------------------
		// ■機器契約(IPv6対応ルーター)チェック
		// -----------------------------------------------------

		// エラーフラグ
		boolean errFlg = false;
		// 多機能ルーター保有フラグ
		boolean tknRouterFlg = false;
		// 機器製造番号
		String kikiSeizoNo = JFUStrConst.EMPTY;

		// 多機能ルーター保有判定
		for (HashMap tknKktkSvcKeiMap : tknKktkSvcKeiList)
		{
			if(tknKktkSvcKeiMap == null || tknKktkSvcKeiMap.size() == 0)
			{
				continue;
			}

			// 機器提供サービス契約ステータス
			String kktkSvdStat = (String)tknKktkSvcKeiMap.get(EKK2811B503CBSMsg1List.KKTK_SVC_KEI_STAT);
			// 機器オプションサービス契約ステータス
			String kkOpSvdStat = (String)tknKktkSvcKeiMap.get(EKK2811B503CBSMsg1List.KKOP_SVC_KEI_STAT);
			// 機器提供サービスコード
			String kktkSvdCd = (String)tknKktkSvcKeiMap.get(EKK2811B503CBSMsg1List.KKTK_SVC_CD);

			// 機器提供サービス契約判定
			boolean kktkJudge =
					!JFUStrConst.CD00037_910.equals(kktkSvdStat) && !JFUStrConst.CD00037_920.equals(kktkSvdStat)
							&& JFUStrConst.CD00132_C024.equals(kktkSvdCd);
			// 機器オプションサービス契約判定
			boolean ttktOpJudge = !JFUStrConst.CD00037_910.equals(kkOpSvdStat) && !JFUStrConst.CD00037_920.equals(kkOpSvdStat);

			// 多機能ルーター判定
			if(kktkJudge && ttktOpJudge)
			{
				// 多機能ルーター保有フラグをtrueにする
				tknRouterFlg = true;
				// 多機能ルーター保有の場合、IPv6対応フラグをtrueにする
				errFlg = true;
				// 機器製造番号を設定
				kikiSeizoNo = (String)tknKktkSvcKeiMap.get(EKK2811B503CBSMsg1List.KIKI_SEIZO_NO);
				break;
			}
		}

		// 機器提供サービス契約一覧照会（サービス契約番号）明細取得
		for (HashMap kktkSvcKeiMap : kktkSvcKeiList)
		{
			// 多機能ルーター保有判定
			if(tknRouterFlg)
			{
				// 多機能ルーターを保有している場合、処理しない
				break;
			}

			// 宅内機器型式コード(機器提供サービス契約)
			String kikitkTaknkikiModelCd = (String)kktkSvcKeiMap.get(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD);

			// -----------------------------------------------------
			// ■宅内機器型式一意照会
			// -----------------------------------------------------

			// IPv6対応フラグ
			String ipv6TaioFlg = null;

			// 上りマッピング
			setInMapTaknkikiModelSearch(param, fixedText, kikitkTaknkikiModelCd);

			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_7, TEMPLATE_ID_7_DETAIL, IN_COLUMN_LIST_7, ERROR_COLUMN_7);

			// IPv6対応フラグを取得
			ipv6TaioFlg =
					(String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_7, TEMPLATE_ID_7_DETAIL).get(0)
							.get(EZM0411A010CBSMsg1List.IPV6_TAIO_FLG));

			// IPv6対応フラグが"1"(有)の場合
			if (JFUStrConst.CD00002_1.equals(ipv6TaioFlg))
			{
				// エラーフラグに「true」を設定
				errFlg = true;
				// 機器製造番号を設定
				kikiSeizoNo = (String)kktkSvcKeiMap.get(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO);
				break;
			}
		}

		if (!errFlg)
		{
			// IPv6未対応ルーターエラー
			setRelationErrorInfo(param, TEMPLATE_ID_7, ERROR_COLUMN_7_IPV6_KIKI_KEI, fixedText);
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// -----------------------------------------------------
		// ■IPv6対応ルーター機器出荷済チェック
		// -----------------------------------------------------
		if(errFlg && (kikiSeizoNo == null || kikiSeizoNo.length() == 0))
		{
			// IPv6対応ルーター機器未出荷エラー
			setRelationErrorInfo(param, TEMPLATE_ID_6, ERROR_COLUMN_6_1, 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 サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws Exception
	 */
	private void checkKojiFin(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Exception
	{

		// -----------------------------------------------------
		// ■工事案件一覧照会
		// -----------------------------------------------------
		// 上りマッピング
		setInMapKojiakSearch(param, fixedText, svcKeiNo);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_8, TEMPLATE_ID_8_DETAIL, IN_COLUMN_LIST_8, ERROR_COLUMN_8);

		// 工事案件一覧照会明細取得
		List<HashMap> kojiAkList = getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_8, TEMPLATE_ID_8_DETAIL);

		// -----------------------------------------------------
		// ■工事未完了チェック
		// -----------------------------------------------------
		for (HashMap kojiAkMap : kojiAkList)
		{
			// 工事案件ステータス
			String kojiakStat = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_STAT);

			// 工事案件種別コード
			String kojiakSbtcd = (String)kojiAkMap.get(EKU0011B010CBSMsg1List.KOJIAK_SBT_CD);

			// 工事案件ステータスが"200"(工事完了済)、"900"(中止)、"120"(登録済)以外の場合
			if (!JFUStrConst.CD00474_200.equals(kojiakStat) && !JFUStrConst.CD00474_900.equals(kojiakStat)
					&& !JFUStrConst.CD00474_120.equals(kojiakStat))
			{

				// 工事案件種別コードが"001"(新設)、"002"(撤去(解約))、
				// "003"(住所変更(新設))、"004"(住所変更(撤去)、"012"(面開発)の場合
				if (JFUStrConst.CD00577_001.equals(kojiakSbtcd) || JFUStrConst.CD00577_002.equals(kojiakSbtcd)
						|| JFUStrConst.CD00577_003.equals(kojiakSbtcd) || JFUStrConst.CD00577_004.equals(kojiakSbtcd)
						|| JFUStrConst.CD00577_012.equals(kojiakSbtcd))
				{

					// 工事未完了エラー
					setRelationErrorInfo(param, TEMPLATE_ID_8, ERROR_COLUMN_8_KOJI_FIN, 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 pcrsCd 料金コースコード
	 * @throws RequestParameterException
	 */
	private void setInMapPcrsOpSvcSearch(IRequestParameterReadWrite param, String fixedText, String pcrsCd) throws RequestParameterException
	{

		// 機能コード設定(2:料金コース_オプションサービス一意照会(カレント))
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0811A010CBSMsg.KEY_PCRS_CD, pcrsCd);
		// ＫＥＹ＿オプションサービスコード
		inMap.put(EKK0811A010CBSMsg.KEY_OP_SVC_CD, JFUStrConst.CD00136_B070);
		// ＫＥＹ＿予約適用年月日
		inMap.put(EKK0811A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 下りマッピング項目設定(料金コース_オプションサービス一意照会)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 * @throws ParseException 
	 */
	private void setOutMapPcrsOpSvcSearch(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{

		// 無料オプションサービス数を取得
		int mryoOpSvcCnt =
				Integer.parseInt((String)(getTemplateList((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL).get(0)
						.get(EKK0811A010CBSMsg1List.MRYO_OP_SVC_CNT)));

		// リクエストパラメータ取得
		HashMap outMap = (HashMap)param.getData(fixedText);

		// 無料数
		outMap.put(ITEM_MURYO_CNT, mryoOpSvcCnt);
	}

	/**
	 * 上りマッピング項目設定(オプションサービス契約一覧照会（サービス契約番号）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 機能コード
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapOpSvcKeiSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{

		// 機能コード設定(1:オプションサービス契約一覧照会（サービス契約番号）)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0351B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿オプションサービスコード
		inMap.put(EKK0351B002CBSMsg.KEY_OP_SVC_CD, JFUStrConst.CD00136_B070);
		// ＫＥＹ＿基準年月日
		inMap.put(EKK0351B002CBSMsg.KEY_BASE_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 下りマッピング項目設定(オプションサービス契約一覧照会（サービス契約番号）)
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param keiCnt 契約数
	 * @throws RequestParameterException
	 */
	private void setOutMapOpSvcKeiSearch(IRequestParameterReadWrite param, String fixedText, int keiCnt) throws RequestParameterException
	{

		// リクエストパラメータ取得
		HashMap outMap = (HashMap)param.getData(fixedText);

		// 契約数
		outMap.put(ITEM_KEI_CNT, keiCnt);
	}

	/**
	 * 上りマッピング項目設定(サービス契約回線内訳一覧照会（現在利用中）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param funcCd 機能コード
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapSvcKeiKaisenUcwkSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{

		// 機能コード設定(1:サービス契約回線内訳一覧照会（現在利用中）)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0251B003CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	* 上りマッピング項目設定(起点変電所一意照会)
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param funcCd 機能コード
	 * @param kitemHdshoCd 起点変電所コード
	* @throws RequestParameterException
	*/
	private void setInMapKitenHdshoSearch(IRequestParameterReadWrite param, String fixedText, String kitemHdshoCd) throws RequestParameterException
	{

		// 機能コード設定(1:起点変電所一意照会)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿起点変電所コード
		inMap.put(EZM0331A010CBSMsg.KEY_KITEN_HDSHO_CD, kitemHdshoCd);
	}

	/**
	* 上りマッピング項目設定(集約局一意照会)
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param funcCd 機能コード
	 * @param shyakkCd 集約局コード
	* @throws RequestParameterException
	*/
	private void setInMapShyakkSearch(IRequestParameterReadWrite param, String fixedText, String shyakkCd) throws RequestParameterException
	{

		// 機能コード設定(1:集約局一意照会)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿集約局コード
		inMap.put(EZM0341A010CBSMsg.KEY_SHYAKK_CD, shyakkCd);
	}

	/**
	* 下りマッピング項目設定(集約局一意照会)
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param funcCd 機能コード
	 * @param chuskkCd 中心局コード
	* @throws RequestParameterException
	*/
	private void setOutMapShyakkSearch(IRequestParameterReadWrite param, String fixedText, String chuskkCd) throws RequestParameterException
	{

		// リクエストパラメータ取得
		HashMap outMap = (HashMap)param.getData(fixedText);

		// 中心局コード
		outMap.put(ITEM_CHUSKK_CD, chuskkCd);
	}

	/**
	* 上りマッピング項目設定(宅内機器型式一意照会)
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param taknkikiModelCd 宅内機器型式コード
	* @throws RequestParameterException
	*/
	private void setInMapTaknkikiModelSearch(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 funcCd 機能コード
	 * @param svcKeiNo サービス契約番号
	* @throws RequestParameterException
	*/
	private void setInMapKktkSvcKeiSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{

		// 機能コード設定(1:機器提供サービス契約一覧照会（サービス契約番号）)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿機器提供サービスコード
		inMap.put(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, JFUStrConst.KK0771_KKTK_SVC_CD_C014);
	}

	/**
	* 上りマッピング項目設定(工事案件一覧照会)
	* 
	* <br>
	* @param param リクエストパラメータ
	* @param fixedText サービスメッセージ
	* @param funcCd 機能コード
	 * @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);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ＫＥＹ＿工事案件番号サービス契約番号
		inMap.put(EKU0011B010CBSMsg.KEY_KOJIAK_NO_SVC_KEI_NO, svcKeiNo);
		// 最大検索件数
		inMap.put(EKU0011B010CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示件数
		inMap.put(EKU0011B010CBSMsg.DISPLAY_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 表示ページ番号
		inMap.put(EKU0011B010CBSMsg.DISPLAY_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
		// 検索処理パターン
		inMap.put(EKU0011B010CBSMsg.SEARCH_TYPE, SEARCH_TYPE_IKT);
		// 総ページ数
		inMap.put(EKU0011B010CBSMsg.TOTAL_PAGE_NUM, JFUStrConst.MAX_SEARCH_NUM);
	}

	/**
	 * 機器提供サービス契約一覧照会（サービス契約番号）の上りマッピング処理です。
	 * <br>
	 * ※多機能ルーター取得用マッピング
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ文字列
	 * @throws RequestParameterException
	 */
	private void setTknRouterSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);

		// ＫＥＹ＿ＳＹＳＩＤ
		inMap.put(EKK2811B503CBSMsg.KEY_SYSID, (String)inMap.get(KEY_SYSID));
		// ＫＥＹ＿サービス契約回線内訳番号
		inMap.put(EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)inMap.get(KEY_SVC_KEI_KAISEN_UCWK_NO));
		// ＫＥＹ＿宅内機器種別コード
		inMap.put(EKK2811B503CBSMsg.KEY_TAKNKIKI_SBT_CD, JFUStrConst.CD01262_R0);
	}

	/**
	 * チェック処理
	 * 
	 * <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;
	}
}
